Added event nodes.#37
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces event support to Statescript graphs by adding a raise-event action node, an event-listener state node, and a provider-based system for authoring/decomposing typed event payloads, alongside an update to the event bus semantics so generic raises also reach non-generic subscribers (with boxed payloads).
Changes:
- Added
RaiseEventNodeandEventListenerNodewith optional typed payload support via new event-payload resolvers/providers. - Added
IEventPayloadProvider+EventPayloadProvider<TPayload>and supporting input/output binding helpers for payload IO. - Updated
EventManagerso generic raises also invoke non-generic handlers (boxing only when needed), plus docs/tests updates and provider namespace consolidation.
Reviewed changes
Copilot reviewed 47 out of 47 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| Forge/Statescript/Providers/IEventPayloadProvider.cs | New interface for building/decomposing typed event payloads and routing typed subscribe/raise. |
| Forge/Statescript/Providers/IEffectContextDataProvider.cs | Moved provider interface into .Providers namespace. |
| Forge/Statescript/Providers/ICueCustomParametersProvider.cs | Moved provider interface into .Providers namespace. |
| Forge/Statescript/Providers/EventPayloadProvider.cs | Base class implementing typed payload provider with non-boxing typed subscribe/raise. |
| Forge/Statescript/Providers/EventPayloadOutputs.cs | Helper to write provider outputs into bound graph/shared variables. |
| Forge/Statescript/Providers/EventPayloadOutput.cs | Declares a provider output (name + value type). |
| Forge/Statescript/Providers/EventPayloadInputs.cs | Helper to lazily resolve authored input values for payload creation. |
| Forge/Statescript/Providers/EventPayloadInput.cs | Declares a provider input (name + expected type). |
| Forge/Statescript/Providers/EventOutputBinding.cs | Binds a provider output name to a graph/shared variable. |
| Forge/Statescript/Providers/EffectContextDataProvider.cs | Namespace update to .Providers. |
| Forge/Statescript/Providers/EffectContextDataInputs.cs | Namespace update to .Providers. |
| Forge/Statescript/Providers/EffectContextDataInput.cs | Namespace update to .Providers. |
| Forge/Statescript/Providers/CueCustomParametersProvider.cs | Namespace update to .Providers. |
| Forge/Statescript/Providers/CueCustomParameterInputs.cs | Namespace update to .Providers. |
| Forge/Statescript/Providers/CueCustomParameterInput.cs | Namespace update to .Providers. |
| Forge/Statescript/Properties/EventPayloadWriter.cs | New runtime helper that subscribes/writes payload outputs via a provider. |
| Forge/Statescript/Properties/EventPayloadResolver.cs | New resolver producing an EventPayloadRaiser for RaiseEventNode. |
| Forge/Statescript/Properties/EventPayloadRaiser.cs | New helper that builds provider payload and raises typed events. |
| Forge/Statescript/Properties/EventPayloadOutputResolver.cs | New resolver producing an EventPayloadWriter for EventListenerNode. |
| Forge/Statescript/Properties/EffectContextDataResolver.cs | Updated imports for provider namespace move. |
| Forge/Statescript/Properties/CueCustomParametersResolver.cs | Updated imports for provider namespace move. |
| Forge/Statescript/Nodes/State/EventListenerNodeContext.cs | New node context to track subscriptions + payload writer. |
| Forge/Statescript/Nodes/State/EventListenerNode.cs | New state node to subscribe to events and emit OnEvent. |
| Forge/Statescript/Nodes/State/EffectNode.cs | Doc ref updated for provider namespace change. |
| Forge/Statescript/Nodes/Action/RaiseEventNode.cs | New action node to raise events on one/many targets with optional typed payload. |
| Forge/Statescript/Nodes/Action/ApplyEffectNode.cs | Doc ref updated for provider namespace change. |
| Forge/Events/EventManager.cs | Generic raises now also invoke non-generic handlers with boxed payload (when any exist). |
| Forge.Tests/Statescript/Resolvers/EventPayloadResolverTests.cs | Tests for raise-side payload resolver/raiser behavior. |
| Forge.Tests/Statescript/Resolvers/EventPayloadOutputResolverTests.cs | Tests for listener-side payload output writer behavior. |
| Forge.Tests/Statescript/Resolvers/EffectContextDataResolverTests.cs | Updated imports for provider namespace move. |
| Forge.Tests/Statescript/Resolvers/CueCustomParametersResolverTests.cs | Updated imports for provider namespace move. |
| Forge.Tests/Statescript/Nodes/State/EventListenerNodeTests.cs | Tests for event listener behavior (built-ins, payload, unsubscribe, catch-all). |
| Forge.Tests/Statescript/Nodes/State/EffectNodeTests.cs | Updated imports for provider namespace move. |
| Forge.Tests/Statescript/Nodes/Action/RaiseEventNodeTests.cs | Tests for raise node behavior (fields, multi-tags, multi-targets, typed payload). |
| Forge.Tests/Statescript/Nodes/Action/ApplyEffectNodeTests.cs | Updated imports for provider namespace move. |
| Forge.Tests/Helpers/TestEventPayloadProvider.cs | Test provider implementing bidirectional payload build/decompose. |
| Forge.Tests/Helpers/TestEventPayload.cs | Test payload type for event-node tests. |
| Forge.Tests/Helpers/TestCueCustomParametersProvider.cs | Updated imports for provider namespace move. |
| Forge.Tests/Helpers/StatescriptTestHelpers.cs | Added helpers to build/bind the new event nodes in tests. |
| Forge.Tests/Events/EventTests.cs | Updated event semantics test for generic raise forwarding to non-generic handlers. |
| docs/statescript/resolvers/README.md | Added documentation index entries for event payload resolvers. |
| docs/statescript/resolvers/event-payload-resolver.md | New documentation for event payload resolvers and provider usage. |
| docs/statescript/nodes/state/README.md | Added EventListenerNode to state node index. |
| docs/statescript/nodes/state/event-listener-node.md | New documentation page for EventListenerNode. |
| docs/statescript/nodes/action/README.md | Added RaiseEventNode to action node index. |
| docs/statescript/nodes/action/raise-event-node.md | New documentation page for RaiseEventNode. |
| docs/events.md | Updated documentation to reflect generic-to-non-generic forwarding semantics. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Added